# -*- coding:utf-8 -*-
import random
from django.conf import settings
from utils.common_logger import logger

# 2.腾讯发生短信模块
# pip3 install qcloudsms_py -i https://pypi.douban.com/simple
import ssl
# ssl._create_default_https_context = ssl._create_unverified_context
from qcloudsms_py import SmsMultiSender, SmsSingleSender
from qcloudsms_py.httpclient import HTTPError


def send_sms_single(phone_num, template_id, template_param_list):
    """
    单条发送短信
    :param phone_num: 手机号
    :param template_id: 腾讯云短信模板ID
    :param template_param_list: 短信模板所需参数列表，例如:【验证码：{1}，描述：{2}】，则传递参数 [888,666]按顺序去格式化模板
    :return:
    """
    appid = settings.TENCENT_SMS_APPID  # 自己应用ID
    appkey = settings.TENCENT_SMS_APPKEY  # 自己应用Key
    sms_sign = settings.TENCENT_SMS_SIGN  # 签名管理里面的 自己腾讯云创建签名时填写的签名内容（使用公众号的话这个值一般是公众号全称或简称）
    sender = SmsSingleSender(appid, appkey)
    try:
        response = sender.send_with_param(86, phone_num, template_id, template_param_list, sign=sms_sign)
    except HTTPError as e:
        response = {'result': 1000, 'errmsg': "网络异常发送失败"}
    return response  # 调用


# 3. 调用函数
def sms_msg(phone, code=None, tpl_id=None):
    """发送短信?tpl =register ---15161?tpl = login ---15161"""
    if not code:
        # 验证码
        code = random.randrange(1000, 9999)
    if not tpl_id:
        tpl_id = 993155
    # 发送
    res = send_sms_single(phone, tpl_id, [code])
    if res["result"] == 0:
        print('成功')
        return True
    print(res['errmsg'])  # settings.py
    logger.error(res['errmsg'])
    return


"""
  'register': 993292,
    'login': 993155

"""
# 4. 选择id 发送
# sms_msg(993292)
